package com.example.research.mapper;

import com.example.research.entity.AuditRecord;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 审核记录数据访问层
 */
@Mapper
public interface AuditRecordMapper {

    /**
     * 根据ID查询审核记录
     */
    AuditRecord selectById(@Param("id") Long id);

    /**
     * 查询所有审核记录
     */
    List<AuditRecord> selectAll();

    /**
     * 根据审核人ID查询审核记录
     */
    List<AuditRecord> selectByAuditorId(@Param("auditorId") Long auditorId);

    /**
     * 根据成果类型和成果ID查询审核记录
     */
    List<AuditRecord> selectByAchievement(@Param("achievementType") Integer achievementType,
                                         @Param("achievementId") Long achievementId);

    /**
     * 根据审核状态查询审核记录
     */
    List<AuditRecord> selectByAuditStatus(@Param("auditStatus") Integer auditStatus);

    /**
     * 插入审核记录
     */
    int insert(AuditRecord auditRecord);

    /**
     * 更新审核记录
     */
    int update(AuditRecord auditRecord);

    /**
     * 删除审核记录
     */
    int deleteById(@Param("id") Long id);

    /**
     * 统计待审核项目数量
     */
    int countPending();

    /**
     * 统计教师可审核的待审核项目数量
     */
    int countPendingForTeacher(@Param("teacherId") Long teacherId);

    /**
     * 统计用户的待审核项目数量
     */
    int countPendingByUserId(@Param("userId") Long userId);
}
